#pragma once

#include "Game/Scene/Entity.h"
#include "Render/Buffer/VertexBuffer.h"
#include "Render/Buffer/IndexBuffer.h"
#include "LocalMath.h"

class LocalEntity : public Entity
{
public:

	LocalEntity(entt::entity handle, GameScene* gameScene) : Entity(handle, gameScene) {};

protected:

	virtual void ReleaseResource() override;

	virtual void OnTick(float deltaTime) override;

public:

	std::string mAlbedoPath;

	std::string mNormalPath;

	RefCountPtr<RHITexture> mAlbedoImage;

	RefCountPtr<RHITexture> mNormalImage;

	RefCountPtr<RHISampler> mAlbedoSampler;

	RefCountPtr<RHISampler> mNormalSampler;



	MaterialUbo mMaterial;

	RefCountPtr<RHIBuffer> mMaterialBuffer;

	RefCountPtr<RHIBuffer> mObjectBuffer;



	std::vector<DescriptorMask> mDescriptorMasks;




	std::vector<RefCountPtr<VertexBuffer>> mVertexBuffers;

	std::vector<RefCountPtr<IndexBuffer>> mIndexBuffers;
};